home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.4 Applications 1997 August / SGI IRIX 6.4 Applications 1997 August.iso / dist / arraysvcs.idb / usr / share / catman / p_man / cat4 / arrayd.conf.z.z / arrayd.conf.z / arrayd.conf
Encoding:
Text File  |  1997-02-07  |  42.8 KB  |  727 lines

  1.  
  2.  
  3.  
  4. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      arrayd.conf, arrayd.auth - array services configuration files
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ////uuuussssrrrr////lllliiiibbbb////aaaarrrrrrrraaaayyyy////aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff
  13.      ////uuuussssrrrr////lllliiiibbbb////aaaarrrrrrrraaaayyyy////aaaarrrrrrrraaaayyyydddd....aaaauuuutttthhhh
  14.  
  15. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  16.      The _a_r_r_a_y_d._c_o_n_f and _a_r_r_a_y_d._a_u_t_h files are used to describe the
  17.      configuration of one or more arrays to the array services daemon.  The
  18.      default configuration files are "/usr/lib/array/arrayd.conf" and
  19.      "/usr/lib/array/arrayd.auth", although the system administrator can
  20.      override this or specify additional files.  Every machine running an
  21.      array services daemon (which should be every machine that is part of an
  22.      array) must have its own configuration file or files.  The configuration
  23.      files contain information about which arrays are known to the array
  24.      services daemon and the machines in each of them, the commands that can
  25.      be executed by the array services daemon, various local options, and
  26.      information used for authenticating messages passed between array
  27.      services daemons on different machines.
  28.  
  29.      The _a_r_r_a_y_d._c_o_n_f file is typically readable by all users while the
  30.      _a_r_r_a_y_d._a_u_t_h file is generally readable only by root.  Other than their
  31.      initial access permissions upon installation, there is no functional
  32.      difference between the two files; either may contain any sort of
  33.      configuration information.  However, because _a_r_r_a_y_d._a_u_t_h is not readable
  34.      by most users it is most appropriate for secure information such as
  35.      authentication keys, while _a_r_r_a_y_d._c_o_n_f is intended to contain public
  36.      information such as the array and command definitions.
  37.  
  38.      The initial configuration files that are installed with array services
  39.      are very minimal: they describe a single array made up only of the local
  40.      machine, several basic "starter" commands (see _a_r_r_a_y(1) for more
  41.      information), and no authentication.  Every site installing array
  42.      services will need to customize the configuration file to describe their
  43.      local arrangement.
  44.  
  45.    GGGGEEEENNNNEEEERRRRAAAALLLL SSSSYYYYNNNNTTTTAAAAXXXX
  46.      The configuration file itself is made up of regular human-readable ASCII
  47.      text.  Blank lines and comments (introduced by a "#" character) are
  48.      ignored.  There are four types of entries in the configuration file:
  49.      array definitions, command definitions, local options, and authentication
  50.      information.  A typical entry may consist of several subentries; by
  51.      convention, each should be on a separate line.  Similarly, some
  52.      subentries may have options, which probably ought to be on separate lines
  53.      as well.  Leading whitespace is ignored, so subentries and options can
  54.      (and should) be indented for improved readability.  The entries in a
  55.      configuration file and the subentries within an individual entry need not
  56.      be in any particular order.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  71.  
  72.  
  73.  
  74.    AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  75.      Most of the various entries, subentries and options take arguments.
  76.      Arguments come in several varieties:
  77.  
  78.      nnnnaaaammmmeeeessss   These are simple identifiers, similar to variable names.  They
  79.              can contain upper and lower case letters and numeric digits
  80.              (although the first character must always be a letter).
  81.  
  82.      nnnnuuuummmmbbbbeeeerrrrssss These are treated as signed 64-bit integers and may be specified
  83.              in hex, octal or decimal, with hex values being preceded by "0x"
  84.              and octal values being preceded by "0".
  85.  
  86.      eeeennnnvvvviiiirrrroooonnnnmmmmeeeennnntttt vvvvaaaarrrriiiiaaaabbbblllleeeessss
  87.              A name preceded by a "$" is presumed to refer to an environment
  88.              variable and will be substituted accordingly.
  89.  
  90.      ssssttttrrrriiiinnnnggggssss Any arbitrary string of characters enclosed in double quotes.
  91.              Double quotes and backslashes can be embedded within the string
  92.              by preceding them with a backslash.  Newlines and tabs can be
  93.              included using "\n" and "\t", respectively.  A real newline may
  94.              also be embedded by preceding it with a backslash, thus allowing
  95.              a string to span several lines in a configuration file.
  96.  
  97.      ssssuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn vvvvaaaarrrriiiiaaaabbbblllleeeessss
  98.              A name preceded by a "%" is referred to as a "substitution
  99.              variable" and will be replaced with some other value.  Recognized
  100.              substitution variables include:
  101.  
  102.              _%%%%_1111, _%%%%_2222, ..., _%%%%_9999
  103.                      These represent the first nine arguments specified for an
  104.                      array command.  For example, if a user invokes an array
  105.                      command with "_aaaa_rrrr_rrrr_aaaa_yyyy _kkkk_iiii_llll_llll_jjjj_oooo_bbbb _1111_3333_5555_4444 _tttt_oooo_kkkk_eeee_nnnn", then %1 would be
  106.                      replaced with "1354" (the first argument to the command
  107.                      "killjob") and %2 would be replaced with "token".
  108.                      Arguments that don't exist (%3 in this case, for example)
  109.                      will be replaced with an empty string.
  110.  
  111.              _%%%%_AAAA_LLLL_LLLL_AAAA_RRRR_GGGG_SSSS
  112.                      This will be replaced with all of the arguments that were
  113.                      specified for an array command.  When used with
  114.                      subentries that take multiple arguments, each individual
  115.                      command-line argument will be treated as an individual
  116.                      argument in the subentry as well.  When used with
  117.                      subentries that take only a single argument, only the
  118.                      first command-line argument will actually be substituted.
  119.  
  120.              _%%%%_AAAA_RRRR_RRRR_AAAA_YYYY  This will be replaced with the name of the array that is
  121.                      the target of the current array command.  This is
  122.                      primarily of use when a machine belongs to two or more
  123.                      separate arrays.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  137.  
  138.  
  139.  
  140.              _%%%%_AAAA_SSSS_HHHH    This will be replaced with the array session handle of
  141.                      the program that invoked the current array command.  It
  142.                      will be in hex and will be preceded with the string "0x".
  143.  
  144.              _%%%%_GGGG_RRRR_OOOO_UUUU_PPPP  This will be replaced with the name corresponding to the
  145.                      effective group ID of the process that invoked the
  146.                      current array command.
  147.  
  148.              _%%%%_LLLL_OOOO_CCCC_AAAA_LLLL  This will be replaced with the name of the local machine,
  149.                      as specified in a LOCAL HOSTNAME entry.  This could be
  150.                      useful if several machines share a configuration file
  151.                      containing commands.
  152.  
  153.              _%%%%_OOOO_RRRR_IIII_GGGG_IIII_NNNN This will be replaced with the primary hostname of the
  154.                      network interface that transmitted the request from the
  155.                      client machine.  If the client and server are the same
  156.                      machine, then this will be "localhost".  This is often
  157.                      _n_o_t the same as the client's machine name since it will
  158.                      typically include the network name as well (e.g.
  159.                      "machine.domain.com", not just "machine").
  160.  
  161.              _%%%%_OOOO_UUUU_TTTT_FFFF_IIII_LLLL_EEEE
  162.                      This variable is valid only as part of a MERGE command.
  163.                      This will be replaced with a list of one or more
  164.                      temporary files.  Each file will contain the output from
  165.                      a single machine of the related array command.  When the
  166.                      merge command is finished, the temporary files will
  167.                      automatically be removed.  The files in the list are not
  168.                      in any particular order; if the merge command needs to
  169.                      know which machine a specific file came from, the
  170.                      original array command should include that data in its
  171.                      output.  When used with subentries that take multiple
  172.                      arguments, each individual pathname will be treated as an
  173.                      individual argument in the subentry as well.  When used
  174.                      with subentries that take only a single argument, only
  175.                      the first output file pathname will actually be
  176.                      substituted.
  177.  
  178.              _%%%%_PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT
  179.                      This will be replaced with the name corresponding to the
  180.                      project ID of the process that invoked the current array
  181.                      command.
  182.  
  183.              _%%%%_RRRR_EEEE_AAAA_LLLL_GGGG_RRRR_OOOO_UUUU_PPPP
  184.                      If the process that invoked the current array command has
  185.                      different real and effective group IDs, then this will be
  186.                      replaced with the name corresponding to the real group
  187.                      ID.  If the real and effective group IDs are the same,
  188.                      then "<same>" will be substituted instead.
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  203.  
  204.  
  205.  
  206.              _%%%%_RRRR_EEEE_AAAA_LLLL_UUUU_SSSS_EEEE_RRRR
  207.                      If the process that invoked the current array command has
  208.                      different real and effective user IDs, then this will be
  209.                      replaced with the name corresponding to the read user ID.
  210.                      If the real and effective user IDs are the same, then
  211.                      "<same>" will be substituted instead.
  212.  
  213.              _%%%%_UUUU_SSSS_EEEE_RRRR   This will be replaced with the name corresponding to the
  214.                      effective user ID of the process that invoked the current
  215.                      array command.
  216.  
  217.      Note that the names of these substitution variables may be in either
  218.      upper or lower case.  If an unrecognized variable name is specified, a
  219.      warning will be issued and the variable will be replaced with an empty
  220.      string.
  221.  
  222.      ssssuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn ffffuuuunnnnccccttttiiiioooonnnnssss
  223.              A substitution variable followed immediately by one or more
  224.              arguments enclosed in parentheses is a "substitution function".
  225.              The arguments of a substitution function can generally be
  226.              anything that is valid as the argument of an entry or subentry,
  227.              except for another substitution function.  Recognized
  228.              substitution functions include:
  229.  
  230.              _%%%%_AAAA_RRRR_GGGG_((((_n_u_m_b_e_r_))))
  231.                   This will be replaced with the command argument specified by
  232.                   _n_u_m_b_e_r, which obviously should be a numeric value.  If the
  233.                   argument does not exist, a warning is generated and an empty
  234.                   string is substituted.
  235.  
  236.              _%%%%_OOOO_PPPP_TTTT_AAAA_RRRR_GGGG_((((_n_u_m_b_e_r_))))
  237.                   This is similar to _%%%%_AAAA_RRRR_GGGG_((((..._)))) except that no warning is
  238.                   generated if the specified argument does not exist.  This is
  239.                   useful for specifying optional arguments.
  240.  
  241.              _%%%%_PPPP_IIII_DDDD_((((_a_s_h_))))
  242.                   _a_s_h specifies an array session handle.  This will be
  243.                   replaced with a list of all process IDs that belong to the
  244.                   specified array session _o_n _t_h_e _l_o_c_a_l _m_a_c_h_i_n_e.  For entries
  245.                   that take more than one argument, each PID will be treated
  246.                   as a separate argument (see %ALLARGS).
  247.  
  248.      As with substitution variables, an unrecognized substitution function
  249.      will be replaced with an empty string and will cause a warning to be
  250.      generated.
  251.  
  252.      lllliiiitttteeeerrrraaaallll aaaarrrrgggguuuummmmeeeennnnttttssss
  253.              A literal argument is any argument that can be evaluated when the
  254.              array services daemon is first started.  This includes names,
  255.              strings, numbers, and environment variables, but specifically
  256.              does NOT include substitution variables or functions.
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  269.  
  270.  
  271.  
  272.      nnnnuuuummmmeeeerrrriiiicccc aaaarrrrgggguuuummmmeeeennnnttttssss
  273.              A numeric argument is an argument that can be resolved to a
  274.              numeric value when the array services daemon is first started.
  275.              This includes actual numbers, of course, as well as strings and
  276.              environment variables.  An error will occur in these latter cases
  277.              if they cannot be converted to proper numeric values.
  278.  
  279.    AAAARRRRRRRRAAAAYYYY EEEENNNNTTTTRRRRIIIIEEEESSSS
  280.      As the name would imply, an array entry is a configuration file entry
  281.      that defines the machines and other details that make up a particular
  282.      array.  The general format looks like this:
  283.  
  284.              _AAAA_RRRR_RRRR_AAAA_YYYY _a_r_r_a_y-_n_a_m_e
  285.                      _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE _n_a_m_e_====_v_a_l_u_e
  286.                      _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE _l_i_t_a_r_g_...._...._....
  287.                      _IIII_DDDD_EEEE_NNNN_TTTT _n_u_m_b_e_r
  288.                      _SSSS_EEEE_QQQQ_FFFF_IIII_LLLL_EEEE _p_a_t_h_n_a_m_e
  289.                      _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE _m_a_c_h_i_n_e-_n_a_m_e-_1
  290.                              _m_a_c_h_i_n_e _o_p_t_i_o_n_s
  291.                              _...._...._....
  292.                      _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE _m_a_c_h_i_n_e-_n_a_m_e-_2
  293.                      _...._...._....
  294.  
  295.      Keywords such as _AAAA_RRRR_RRRR_AAAA_YYYY, _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE and _IIII_DDDD_EEEE_NNNN_TTTT may be in either upper or lower
  296.      case; upper case is used here to distinguish them from other fields.  The
  297.      various subentries do not necessarily have to occur in any particular
  298.      order.  However, they should _n_o_t appear between options in a MACHINE
  299.      subentry.
  300.  
  301.      _a_r_r_a_y-_n_a_m_e is the name that will be used to refer to the array as a
  302.      whole; it may be of any length.  This is the name that would be used with
  303.      the "-a" option of the _a_r_r_a_y(1) command.
  304.  
  305.      The _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE subentry is used to specify one or more arbitrary
  306.      values that will be maintained in the configuration database but will
  307.      otherwise be ignored by the array services daemon.  Programs that obtain
  308.      array configuration information (for example, using the _a_s_l_i_s_t_a_r_r_a_y_s(3X)
  309.      function) will be provided with a list of these attributes.  Thus, these
  310.      could be useful for maintaining miscellaneous configuration information
  311.      that may be needed by other programs.  The _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE subentry may
  312.      be specified more than once.  If the attribute starts with a simple
  313.      identifer followed by an equal sign, then the remainder of the line (with
  314.      multiple blanks and tabs converted to a single space) will be appended to
  315.      form a single attribute.  Such an attribute could be used along with the
  316.      _a_s_g_e_t_a_t_t_r(3x) function in a manner similar to environment variables.  If
  317.      the attribute is formed of any other literal argument, then it is
  318.      presumed to end as soon as white space is encountered.  In this case,
  319.      multiple attributes could be specified on a single line.
  320.  
  321.      The _SSSS_EEEE_QQQQ_FFFF_IIII_LLLL_EEEE subentry specifies the pathname of a file used to keep an
  322.      array session sequence number for the array.  The default sequence file
  323.      is located in the directory specified by _LLLL_OOOO_CCCC_AAAA_LLLL _DDDD_IIII_RRRR (see below) and has a
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  335.  
  336.  
  337.  
  338.      name formed by appending the array name to the string ".seqfile.".
  339.  
  340.      The _IIII_DDDD_EEEE_NNNN_TTTT subentry specifies a numeric value that is used when generating
  341.      global array session handles for the array.  No other array should have
  342.      the same IDENT value.  If an IDENT value is not specified, a random one
  343.      will be generated.  The value should be in the range of 1-32767.
  344.  
  345.      Each _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE subentry specifies a single machine that is a member of the
  346.      array.  Each _AAAA_RRRR_RRRR_AAAA_YYYY entry must have at least one _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE subentry.
  347.      _m_a_c_h_i_n_e-_n_a_m_e is the name that is used to refer to this machine.
  348.      Ordinarily this would be the machine's hostname, though that is merely a
  349.      convention and not a requirement.
  350.  
  351.      A _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE subentry may have zero or more options.  These include:
  352.  
  353.      _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE _l_i_t_a_r_g_...._...._....   or   _n_a_m_e_====_v_a_l_u_e
  354.              The _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE option is similar to the _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE
  355.              subentry in that it is used to specify one or more arbitrary
  356.              values that will be maintained in the configuration database but
  357.              will otherwise be ignored by the array services daemon.  Programs
  358.              that obtain machine configuration information (for example, using
  359.              the _a_s_l_i_s_t_m_a_c_h_i_n_e_s(3X) function) will be provided with a list of
  360.              these attributes.  Thus, these could be useful for maintaining
  361.              miscellaneous configuration information that may be needed by
  362.              other programs.  The _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE option may be specified
  363.              more than once, and has the same syntax as _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE.
  364.  
  365.      _[[[[_SSSS_EEEE_RRRR_VVVV_EEEE_RRRR_]]]] _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE _s_t_r_i_n_g
  366.              to specify the full hostname or IP address of the machine.  The
  367.              value should be enclosed in double quotes.  If a _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE is not
  368.              specified, the machine name will be used.  The string _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR is
  369.              optional.
  370.  
  371.      _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR _IIII_DDDD_EEEE_NNNN_TTTT _n_u_m_b_e_r
  372.              to specify the numeric identifier of the array services daemon on
  373.              that machine.  This value may be used for generating global array
  374.              session handles or uniquely identifying the machine.  If a _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR
  375.              _IIII_DDDD_EEEE_NNNN_TTTT is specified for a machine, it should match the _LLLL_OOOO_CCCC_AAAA_LLLL _IIII_DDDD_EEEE_NNNN_TTTT
  376.              that is specified in that machine's local array services
  377.              configuration file.  Note that unlike the _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE and _PPPP_OOOO_RRRR_TTTT
  378.              options, the string _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR that comes before _IIII_DDDD_EEEE_NNNN_TTTT is required.
  379.  
  380.      _[[[[_SSSS_EEEE_RRRR_VVVV_EEEE_RRRR_]]]] _PPPP_OOOO_RRRR_TTTT _n_u_m_b_e_r
  381.              to specify which port the array services daemon for this machine
  382.              is listening on.  This would override the default port number of
  383.              5434.  The string _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR is optional.
  384.  
  385.    CCCCOOOOMMMMMMMMAAAANNNNDDDD DDDDEEEEFFFFIIIINNNNIIIITTTTIIIIOOOONNNNSSSS....
  386.      A command entry defines the actual program that is invoked by the array
  387.      services daemon when it receives an array command.  Its format is similar
  388.      to an array entry, and looks like this:
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  401.  
  402.  
  403.  
  404.              _CCCC_OOOO_MMMM_MMMM_AAAA_NNNN_DDDD _c_m_d-_n_a_m_e
  405.                      _IIII_NNNN_VVVV_OOOO_KKKK_EEEE _a_n_y-_a_r_g_s_...._...._....
  406.                      _MMMM_EEEE_RRRR_GGGG_EEEE _a_n_y-_a_r_g_s_...._...._....
  407.                      _GGGG_RRRR_OOOO_UUUU_PPPP _a_n_y-_a_r_g
  408.                      _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT _a_n_y-_a_r_g
  409.                      _UUUU_SSSS_EEEE_RRRR _a_n_y-_a_r_g
  410.                      _OOOO_PPPP_TTTT_IIII_OOOO_NNNN_SSSS _l_i_t_a_r_g_...._...._....
  411.  
  412.      _c_m_d-_n_a_m_e specifies the actual command name.  This is what the user would
  413.      use when invoking the command with _a_r_r_a_y(1).
  414.  
  415.      The _IIII_NNNN_VVVV_OOOO_KKKK_EEEE subentry specifies the actual program to be executed, plus any
  416.      arguments that should be supplied to it.  Any number of arguments may be
  417.      specified for the _IIII_NNNN_VVVV_OOOO_KKKK_EEEE subentry.  Groups of arguments that are _n_o_t
  418.      separated by white space will be concatenated to form single values
  419.      (white space embedded in a string is not considered to be "white space"
  420.      for these purposes).  Each resulting value will be passed to the program
  421.      to be executed as a single argument.  Thus, if a user typed "array foo a
  422.      b c", and the _IIII_NNNN_VVVV_OOOO_KKKK_EEEE subentry for the command "foo" were:
  423.  
  424.              _IIII_NNNN_VVVV_OOOO_KKKK_EEEE _////_uuuu_ssss_rrrr_////_bbbb_iiii_nnnn_////_tttt_eeee_ssss_tttt_%%%%_1111 _%%%%_2222_""""_tttt_hhhh_iiii_ssss _iiii_ssss _aaaa _tttt_eeee_ssss_tttt_"""" _%%%%_3333
  425.  
  426.      the argument list for the program to be executed would consist of:
  427.  
  428.              _aaaa_rrrr_gggg_vvvv_[[[[_0000_]]]] _==== _""""_////_uuuu_ssss_rrrr_////_bbbb_iiii_nnnn_////_tttt_eeee_ssss_tttt_aaaa_""""
  429.              _aaaa_rrrr_gggg_vvvv_[[[[_1111_]]]] _==== _""""_bbbb_tttt_hhhh_iiii_ssss _iiii_ssss _aaaa _tttt_eeee_ssss_tttt_""""
  430.              _aaaa_rrrr_gggg_vvvv_[[[[_2222_]]]] _==== _""""_cccc_""""
  431.  
  432.      Note that the first value in the argument list also specifies the actual
  433.      pathname of the program to be executed ("/usr/bin/testa" in this case).
  434.      The array services daemon does /f2not/f1 have a search path, so this must
  435.      specify either an absolute path to the file to be executed, or a path
  436.      relative to the array services daemon's current directory (see the DIR
  437.      local option).
  438.  
  439.      The _MMMM_EEEE_RRRR_GGGG_EEEE subentry is used to specify a "merge command".  Ordinarily,
  440.      when an array command is run on several machines, the results and output
  441.      from each machine are returned as separate streams of data.  However, if
  442.      a merge command is specified, it will be run after the array command
  443.      itself has been completed on all machines, and only the results and
  444.      output of the merge command will be returned.  When used with the
  445.      %OUTFILES substitution variable, this could be a convenient way to
  446.      consolidate or summarize the results of the array command.  The merge
  447.      command is executed in the same was as a normal _IIII_NNNN_VVVV_OOOO_KKKK_EEEE command, except
  448.      that it always runs on the same machine as the array services daemon,
  449.      even if that particular machine is not a member of the array that the
  450.      array command was run on.
  451.  
  452.      The _GGGG_RRRR_OOOO_UUUU_PPPP, _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT and _UUUU_SSSS_EEEE_RRRR subentries are all optional and specify the
  453.      name of the group, project and user that the program should be run under.
  454.      Each of these take a single argument.  To run with the ID's of the user
  455.      that invoked the array command, these could be specified as %GROUP,
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  467.  
  468.  
  469.  
  470.      %PROJECT and %USER, respectively.  If these are not specified for a
  471.      particular command entry, they will default first to the values set in
  472.      the local options, or if those are not present, to user and group "guest"
  473.      and project 0.  By default, the _GGGG_RRRR_OOOO_UUUU_PPPP and _UUUU_SSSS_EEEE_RRRR subentries only affect the
  474.      _e_f_f_e_c_t_i_v_e group and user IDs of the program; the _r_e_a_l group and user IDs
  475.      will be the same as those of the process that invoked the program.  This
  476.      behavior can be changed using the _SSSS_EEEE_TTTT_RRRR_GGGG_IIII_DDDD and _SSSS_EEEE_TTTT_RRRR_UUUU_IIII_DDDD command options
  477.      (see below).
  478.  
  479.      The _OOOO_PPPP_TTTT_IIII_OOOO_NNNN_SSSS subentry is used to specify additional details about how the
  480.      command should be processed.  It should be followed by one or more
  481.      arguments from the following list.  The arguments may be in either upper
  482.      or lower case.  They may also be preceded by the string "NO" to negate
  483.      their effects.
  484.  
  485.      _LLLL_OOOO_CCCC_AAAA_LLLL
  486.           Execute the command on the same machine as the array services daemon
  487.           _o_n_l_y, even if a target array was specified explicitly or by default.
  488.  
  489.      _NNNN_EEEE_WWWW_SSSS_EEEE_SSSS_SSSS_IIII_OOOO_NNNN
  490.           Execute the command in a new global array session.  Normally the
  491.           command would be run in the same array session as the process that
  492.           invoked it.
  493.  
  494.      _QQQQ_UUUU_IIII_EEEE_TTTT
  495.           Discard any output generated by the command.  If a merge command has
  496.           been specified, _QQQQ_UUUU_IIII_EEEE_TTTT applies to the merge command and _n_o_t the
  497.           invoke command.  This would allow a merge command to quietly act on
  498.           the output of the invoke commands.
  499.  
  500.      _SSSS_EEEE_TTTT_RRRR_GGGG_IIII_DDDD
  501.           Run the command with _b_o_t_h its real and effective group IDs set to
  502.           the value specified by the _GGGG_RRRR_OOOO_UUUU_PPPP subentry.  Normally, only the
  503.           effective group ID is taken from the _GGGG_RRRR_OOOO_UUUU_PPPP subentry, while the real
  504.           group ID is taken from the process that invoked the command.
  505.  
  506.      _SSSS_EEEE_TTTT_RRRR_UUUU_IIII_DDDD
  507.           Run the command with _b_o_t_h its real and effective user IDs set to the
  508.           value specified by the _UUUU_SSSS_EEEE_RRRR subentry.  Normally, only the effective
  509.           user ID is taken from the _UUUU_SSSS_EEEE_RRRR subentry, while the real user ID is
  510.           taken from the process that invoked the command.
  511.  
  512.      _WWWW_AAAA_IIII_TTTT Wait for each invoked program to complete execution before returning
  513.           control to the process that requested the command.  This is the
  514.           default behavior.  If _NNNN_OOOO_WWWW_AAAA_IIII_TTTT is specified then control is returned
  515.           to the requestor immediately after starting the invoked programs.
  516.           _NNNN_OOOO_WWWW_AAAA_IIII_TTTT implies _QQQQ_UUUU_IIII_EEEE_TTTT and causes any merge command to be ignored.
  517.  
  518.    LLLLOOOOCCCCAAAALLLL OOOOPPPPTTTTIIIIOOOONNNNSSSS....
  519.      A local options entry specifies options to be used by the array services
  520.      daemon itself.  If more than one local options entry is specified,
  521.      settings in later entries will silently override those in earlier
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  533.  
  534.  
  535.  
  536.      entries.  A local options entry looks like this:
  537.  
  538.              _LLLL_OOOO_CCCC_AAAA_LLLL
  539.                      _DDDD_IIII_RRRR _l_i_t_e_r_a_l-_a_r_g
  540.                      _DDDD_EEEE_SSSS_TTTT_IIII_NNNN_AAAA_TTTT_IIII_OOOO_NNNN _AAAA_RRRR_RRRR_AAAA_YYYY _l_i_t_e_r_a_l-_a_r_g
  541.                      _GGGG_RRRR_OOOO_UUUU_PPPP _l_i_t_e_r_a_l-_a_r_g
  542.                      _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE _l_i_t_e_r_a_l-_a_r_g
  543.                      _IIII_DDDD_EEEE_NNNN_TTTT _n_u_m-_a_r_g
  544.                      _PPPP_OOOO_RRRR_TTTT _n_u_m-_a_r_g
  545.                      _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT _l_i_t_e_r_a_l-_a_r_g
  546.                      _UUUU_SSSS_EEEE_RRRR _l_i_t_e_r_a_l-_a_r_g
  547.                      _OOOO_PPPP_TTTT_IIII_OOOO_NNNN_SSSS _l_i_t_e_r_a_l-_a_r_g_...._...._....
  548.  
  549.      All of the subentries in a local entry are optional.
  550.  
  551.      The _DDDD_IIII_RRRR subentry specifies an absolute pathname for the array services
  552.      daemon's working directory.  The default is "/usr/lib/array".
  553.  
  554.      The _DDDD_EEEE_SSSS_TTTT_IIII_NNNN_AAAA_TTTT_IIII_OOOO_NNNN _AAAA_RRRR_RRRR_AAAA_YYYY subentry specifies the default target array for
  555.      array commands when one has not been specified explicitly by the user.
  556.      There is no default value unless only one array is defined (in which case
  557.      it becomes the default); if a user omits the target array and there is no
  558.      default then an error will occur.
  559.  
  560.      The _GGGG_RRRR_OOOO_UUUU_PPPP, _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT and _UUUU_SSSS_EEEE_RRRR subentries specify the names of the group,
  561.      project and user under which an array command should be run.  A _GGGG_RRRR_OOOO_UUUU_PPPP,
  562.      _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT or _UUUU_SSSS_EEEE_RRRR specified in a particular command entry will always
  563.      override these values.  These default to the group, project and user that
  564.      is running the array services daemon.
  565.  
  566.      The _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE subentry specifies the value that is returned by the
  567.      "%LOCAL" substitution variable.  The results of array services commands
  568.      initiated with _a_s_c_o_m_m_a_n_d(3X) will also refer to this name.  The default
  569.      is the actual hostname of the local machine.
  570.  
  571.      The _IIII_DDDD_EEEE_NNNN_TTTT subentry specifies a numeric value that is included in global
  572.      array session handles generated by this array services daemon.  Some
  573.      versions of IRIX may also make use of this value to generate their own
  574.      global array session handles.  No other array services daemon should have
  575.      the same IDENT value.  If an IDENT value is not specified, one will be
  576.      generated from the hostid of the local machine.  The value must be in the
  577.      range of 1-32767.
  578.  
  579.      The _PPPP_OOOO_RRRR_TTTT subentry specifies the network port on which this array services
  580.      daemon will listen for requests.  The default is the standard sgi-arrayd
  581.      service, 5434.
  582.  
  583.      The _OOOO_PPPP_TTTT_IIII_OOOO_NNNN_SSSS subentry is used to specify additional details about the
  584.      operation of the array services daemon.  It should be followed by one or
  585.      more arguments from the following list.  The arguments may be in either
  586.      upper or lower case.  They may also be preceded by the string "NO" to
  587.      negate their effects.
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  599.  
  600.  
  601.  
  602.      _SSSS_EEEE_TTTT_MMMM_AAAA_CCCC_HHHH_IIII_DDDD
  603.           Some versions of IRIX permit setting a system "machine identifier",
  604.           which is used by the kernel for generating global array session
  605.           handles.  If the current system has this facility and _SSSS_EEEE_TTTT_MMMM_AAAA_CCCC_HHHH_IIII_DDDD is
  606.           specified, _a_r_r_a_y_d will set the machine ID to the value specified by
  607.           a LOCAL IDENT statement in the configuration file or on the command
  608.           line with the ----mmmm option.
  609.  
  610.    AAAAUUUUTTTTHHHHEEEENNNNTTTTIIIICCCCAAAATTTTIIIIOOOONNNN IIIINNNNFFFFOOOORRRRMMMMAAAATTTTIIIIOOOONNNN....
  611.      An authentication information entry is used to describe the type of
  612.      authentication that should be done when passing messages to and from
  613.      other array services daemon.  Authentication information entries do not
  614.      accumulate: if more than one is encountered in the various configuration
  615.      files processed by an array services daemon, only the last one will have
  616.      any effect; all information from previous entries will be discarded.
  617.      There is currently only one type of authentication provided, though more
  618.      may be provided in the future.  Its entry looks like this:
  619.  
  620.              _AAAA_UUUU_TTTT_HHHH_EEEE_NNNN_TTTT_IIII_CCCC_AAAA_TTTT_IIII_OOOO_NNNN _SSSS_IIII_MMMM_PPPP_LLLL_EEEE
  621.                      _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE _l_i_t_e_r_a_l-_a_r_g _KKKK_EEEE_YYYY _n_u_m-_a_r_g
  622.                      _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE _l_i_t_e_r_a_l-_a_r_g _KKKK_EEEE_YYYY _n_u_m-_a_r_g
  623.                      _...._...._....
  624.  
  625.      This entry contains one or more subentries consisting of machine/key
  626.      pairs.  _l_i_t_e_r_a_l-_a_r_g is the network hostname of a machine.  Notice that
  627.      the network hostname is not necessarily the same as the "machine name"
  628.      used to identify a machine in an array entry (see above).  _n_u_m-_a_r_g is a
  629.      64-bit unsigned integer that is to be used as the authentication key for
  630.      all messages originating from that machine.  If a key of 0 is specified,
  631.      authentication will not be performed on messages originating from that
  632.      machine.  Similarly, if a machine has no subentry at all, no
  633.      authentication will be performed on messages received from it.
  634.  
  635.      If a machine appears in more than one array entry, it needs to have only
  636.      one subentry in the authentication information.  Conversely, the machine
  637.      in an authentication information subentry does not need to appear in any
  638.      array entries.
  639.  
  640.      With the SIMPLE scheme, a "digital signature" is calculated for each
  641.      message using the authentication key associated with the sending machine,
  642.      then sent along with the message.  When an array services daemon receives
  643.      a message from another machine, it checks its private database for the
  644.      authentication key associated with the machine that sent the message,
  645.      recalculates the digital signature, and ensures that it matches the one
  646.      sent with the message.  This provides some basic protection against
  647.      forged messages, since a forger (presumably) would not have access to the
  648.      authentication key that is required to calculate a proper digital
  649.      signature.
  650.  
  651.      Because this approach depends on the secrecy of the authentication keys,
  652.      it is important to put this type of authentication information entry in a
  653.      configuration file that is not accessible to general users (e.g. the
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))                                                  aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444))))
  665.  
  666.  
  667.  
  668.      _a_r_r_a_y_d._a_u_t_h file in the default installation).  Because both the sender
  669.      and receiver need to have the same authentication key for a given
  670.      machine, the administrator must take special care to ensure that the
  671.      authentication information in each machine's configuration files are
  672.      consistent with each other.
  673.  
  674.      It is possible to disable authentication entirely by using an
  675.      authentication information entry of the form:
  676.  
  677.              _AAAA_UUUU_TTTT_HHHH_EEEE_NNNN_TTTT_IIII_CCCC_AAAA_TTTT_IIII_OOOO_NNNN _NNNN_OOOO_NNNN_EEEE
  678.  
  679.      This is the default setting when the array services are first installed.
  680.  
  681. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  682.      arrayd(1M), asgetattr(3X), aslistarrays(3X), aslistmachines(3X),
  683.      array_services(5).
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.                                                                        PPPPaaaaggggeeee 11111111
  724.  
  725.  
  726.  
  727.